iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
SideProject30

Java Spring + Vue 甘苦學習路 前後端分離之 Blog 實戰系列 第 6

Day 6 Java Spring API 之資料系統建構 — 撈出文章功能

  • 分享至 

  • xImage
  •  

概述

此篇將講述如何取得文章,相較於新增資料的 POST method,請求資料會使用 GET method。而大致的流程架構如上篇所示,最後也會有 API 測試的部分,比較不同的是會做程式碼的精簡優化。

Service 層

  1. PostService interface class 中建立列出所有文章的的 method: getAllPosts()
public interface PostService {

    PostDto createPost(PostDto postDto);
    List<PostDto> getAllPosts();
}
  1. 並且在 PostServiceImpl class 中使用 Override 覆蓋該 function
@Override
    public List<PostDto> getAllPosts() {
        List<Post> posts = postRepository.findAll();
        return posts.stream().map(post->mapToDTO(post)).collect(Collectors.toList());

    }
  1. 在撰寫時會發現有動用到資料處理的都會要先進行 Entity 轉成 DTO 以及 DTO 轉成 Entity 這兩個動作,所以可以將這些動作獨立出原本的 method 中。如下:
    a. Entity 轉成 DTO
private PostDto mapToDTO(Post post){
	   PostDto postResponse = new PostDto();
     postResponse.setId(newPost.getId());
     postResponse.setTitle(newPost.getTitle());
     postResponse.setDescription(newPost.getDescription());
     postResponse.setContent(newPost.getContent());
		 return postResponse;
}

這樣的話,createPost() 的 function 就要刪除關於轉換的部分,並且取而代之的會是:

PostDto postResponse =  mapToDTO(newPost);
  b. 轉換成 DTO 轉成 Entity 的如下:
private Post mapToEntity(PostDto postDto){
        Post post = new Post();
        post.setTitle(postDto.getTitle());
        post.setDescription(postDto.getDescription());
        post.setContent(postDto.getContent());
        return post;
    }

所以在一開始的轉換中就可以使用 mapToEntity 這個 method

Post post = mapToEntity(postDto);

以上為程式優化以及功能建立。

Controller 層

在處理使用者動作時,因為是向資料庫 request 獲取資料,所以使用的方法是 GET,會使用 @GetMapping

@GetMapping
    public List<PostDto> getAllPost(){
        return postService.getAllPosts();
    }

API Test — Postman

使用 http://localhost:8080/api/posts,並選擇 GET 的方式,按下 send 後就會顯示出資料的喔~

以上是有關撈出文章的 API 實作以及流程,明天將更深入了解其他的 API 設定~

若文中有錯誤之處還請多多包涵與指正,歡迎在文章下方留言討論!

明天見~


上一篇
Day 5 Java Spring API 建立 — 發文功能
下一篇
Day 7 Java Spring API 建立 — 根據 id 撈出文章功能
系列文
Java Spring + Vue 甘苦學習路 前後端分離之 Blog 實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言